/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/

 

#ifndef PodModel_h
#define PodModel_h
#import <JDCloudOCSDKVpc/JDCloudOCSDKVpc.h>
#import <JDCloudOCSDKCharge/JDCloudOCSDKCharge.h>

@interface ContainerStateWaiting :NSObject

/// （简要）容器还没有运行原因。&lt;br&gt;
   /// eg ContainerCreating     
   /// 
@property (strong,nonatomic,nonnull)  NSString*  reason;

/// 容器还没有运行的详细信息。
@property (strong,nonatomic,nonnull)  NSString*  message;


-(id) initWithReason:(NSString*) reason
    message:(NSString*)message;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface SecurityGroupSimple :NSObject

/// 安全组ID
@property (strong,nonatomic,nonnull)  NSString*  groupId;

/// 安全组名称
@property (strong,nonatomic,nonnull)  NSString*  groupName;


-(id) initWithGroupId:(NSString*) groupId
    groupName:(NSString*)groupName;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Request :NSObject

/// 容器必需的计算资源
@property (strong,nonatomic,nonnull)  NSString*  cpu;

/// 容器使用计算资源上限
@property (strong,nonatomic,nonnull)  NSString*  memoryMB;


-(id) initWithCpu:(NSString*) cpu
    memoryMB:(NSString*)memoryMB;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RequestSpec :NSObject

/// 容器必需的计算资源，例：300m，1000m
@property (strong,nonatomic,nonnull)  NSString*  cpu;

/// 容器使用计算资源上限，例：1024Mi，16384Mi
@property (strong,nonatomic,nonnull)  NSString*  memoryMB;


-(id) initWithCpu:(NSString*) cpu
    memoryMB:(NSString*)memoryMB;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface LogConfigSpec :NSObject

/// 日志Driver名称，目前只支持默认为每一个容器在本地分配10MB的存储空间，自动rotate。目前仅支持default。默认值：default。
@property (strong,nonatomic,nonnull)  NSString*  logDriver;


-(id) initWithLogDriver:(NSString*) logDriver;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Logs :NSObject

/// 容器日志内容，最多返回4KB
@property (strong,nonatomic,nonnull)  NSString*  content;


-(id) initWithContent:(NSString*) content;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Exec :NSObject

/// 执行的命令。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  command;


-(id) initWithCommand:(NSArray<NSString*>*) command;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface HostAlias :NSObject

/// 域名列表。
   /// 
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  hostnames;

/// ipv4地址。
@property (strong,nonatomic,nonnull)  NSString*  ip;


-(id) initWithHostnames:(NSArray<NSString*>*) hostnames
    ip:(NSString*)ip;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface VolumeMount :NSObject

/// 挂载的云盘在pod中的名称。
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 容器内挂载点。
@property (strong,nonatomic,nonnull)  NSString*  mountPath;

/// 是否以只读方式挂载。
@property (strong,nonatomic,nonnull)  NSNumber*  readOnly;


-(id) initWithName:(NSString*) name
    mountPath:(NSString*)mountPath
    readOnly:(NSNumber*)readOnly;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PodQuota :NSObject

/// 类型
@property (strong,nonatomic,nonnull)  NSString*  resourceType;

/// 配额
@property (strong,nonatomic,nonnull)  NSNumber*  limit;

/// 已使用的数目
@property (strong,nonatomic,nonnull)  NSNumber*  used;


-(id) initWithResourceType:(NSString*) resourceType
    limit:(NSNumber*)limit
    used:(NSNumber*)used;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

@interface InstanceTypeState :NSObject

/// 可用区
@property (strong,nonatomic,nonnull)  NSString*  az;

/// 可售卖情况，true:可售卖、false:已售罄不可用
@property (strong,nonatomic,nonnull)  NSNumber*  inStock;

/// 在线情况，true:在线、false:已下线不可用
@property (strong,nonatomic,nonnull)  NSNumber*  online;


-(id) initWithAz:(NSString*) az
    inStock:(NSNumber*)inStock
    online:(NSNumber*)online;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PodDnsConfigOptionSpec :NSObject

/// 长度范围：[1-63]，需满足linux resolver限制
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 长度范围：[0-100]，仅限timeout, attempts, ndots
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithName:(NSString*) name
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface JDCloudVolumeSource :NSObject

/// 云盘id，使用已有云盘
@property (strong,nonatomic,nonnull)  NSString*  volumeId;

/// 云盘快照id，根据云盘快照创建云盘。
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;

/// 云盘类型：hdd.std1,ssd.gp1,ssd.io1
@property (strong,nonatomic,nonnull)  NSString*  diskType;

/// 云盘size,单位 GB,要求
@property (strong,nonatomic,nonnull)  NSNumber*  sizeGB;

/// 指定volume文件系统类型，目前支持[xfs, ext4]；如果新创建的盘，不指定文件系统类型默认格式化成xfs
@property (strong,nonatomic,nonnull)  NSString*  fsType;

/// 随容器自动创建的新盘，会自动格式化成指定的文件系统类型；挂载已有的盘，默认不会格式化，只会按照指定的fsType去挂载；如果希望格式化，必须设置此字段为true
@property (strong,nonatomic,nonnull)  NSNumber*  formatVolume;

/// 云盘的 iops 值，目前只有 ssd.io1 类型有效
@property (strong,nonatomic,nonnull)  NSNumber*  iops;

/// 是否随pod删除。默认：true
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;


-(id) initWithVolumeId:(NSString*) volumeId
    snapshotId:(NSString*)snapshotId
    diskType:(NSString*)diskType
    sizeGB:(NSNumber*)sizeGB
    fsType:(NSString*)fsType
    formatVolume:(NSNumber*)formatVolume
    iops:(NSNumber*)iops
    autoDelete:(NSNumber*)autoDelete;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface CloudDiskSpec :NSObject

/// 云盘ID，指定使用已有云盘
@property (strong,nonatomic,nonnull)  NSString*  volumeId;

/// 云盘名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 云盘快照ID，根据云盘快照创建云盘。
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;

/// 云盘类型：hdd.std1,ssd.gp1,ssd.io1
@property (strong,nonatomic,nonnull)  NSString*  diskType;

/// 云盘size,单位 GB,要求
@property (strong,nonatomic,nonnull)  NSNumber*  sizeGB;

/// 指定volume文件系统类型，目前支持[xfs, ext4]；如果新创建的盘，不指定文件系统类型默认格式化成xfs
@property (strong,nonatomic,nonnull)  NSString*  fsType;

/// 云盘的 iops 值，目前只有 ssd.io1 类型有效
@property (strong,nonatomic,nonnull)  NSNumber*  iops;

/// 是否随pod删除。默认：true
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;


-(id) initWithVolumeId:(NSString*) volumeId
    name:(NSString*)name
    snapshotId:(NSString*)snapshotId
    diskType:(NSString*)diskType
    sizeGB:(NSNumber*)sizeGB
    fsType:(NSString*)fsType
    iops:(NSNumber*)iops
    autoDelete:(NSNumber*)autoDelete;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PodCondition :NSObject

/// 最后一次探测状态的时间
@property (strong,nonatomic,nonnull)  NSString*  lastProbeTime;

/// 最后一次改变状态的时间
@property (strong,nonatomic,nonnull)  NSString*  lastTransitionTime;

/// 最后一次状态改变的简要原因
@property (strong,nonatomic,nonnull)  NSString*  reason;

/// Status is the status of the condition. Can be True, False, Unknown.
@property (strong,nonatomic,nonnull)  NSString*  status;

/// 最后一次状态改变的信息
@property (strong,nonatomic,nonnull)  NSString*  message;

/// 状态的条件。目前仅限 Ready.
@property (strong,nonatomic,nonnull)  NSString*  conditionType;


-(id) initWithLastProbeTime:(NSString*) lastProbeTime
    lastTransitionTime:(NSString*)lastTransitionTime
    reason:(NSString*)reason
    status:(NSString*)status
    message:(NSString*)message
    conditionType:(NSString*)conditionType;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface BindInfo :NSObject

/// pod ID
@property (strong,nonatomic,nonnull)  NSString*  resourceId;

/// pod 名称
@property (strong,nonatomic,nonnull)  NSString*  resourceName;

/// 备注信息
@property (strong,nonatomic,nonnull)  NSString*  remark;


-(id) initWithResourceId:(NSString*) resourceId
    resourceName:(NSString*)resourceName
    remark:(NSString*)remark;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TcpSocket :NSObject

/// 端口号，范围：[1-65535]
@property (strong,nonatomic,nonnull)  NSNumber*  port;


-(id) initWithPort:(NSNumber*) port;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ContainerStateTerminated :NSObject

/// 容器被终止的信号。
@property (strong,nonatomic,nonnull)  NSNumber*  signal;

/// 容器被终止的退出码。
@property (strong,nonatomic,nonnull)  NSNumber*  exitCode;

/// （简要）容器被终止的原因。
@property (strong,nonatomic,nonnull)  NSString*  reason;

/// 容器被终止的详细信息。
@property (strong,nonatomic,nonnull)  NSString*  message;

/// 容器被终止的时间。
@property (strong,nonatomic,nonnull)  NSString*  finishedAt;

/// 容器开始执行的时间。
@property (strong,nonatomic,nonnull)  NSString*  startedAt;


-(id) initWithSignal:(NSNumber*) signal
    exitCode:(NSNumber*)exitCode
    reason:(NSString*)reason
    message:(NSString*)message
    finishedAt:(NSString*)finishedAt
    startedAt:(NSString*)startedAt;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PodTagFilter :NSObject

/// Tag键
@property (strong,nonatomic,nonnull)  NSString*  key;

/// Tag值
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  values;


-(id) initWithKey:(NSString*) key
    values:(NSArray<NSString*>*)values;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
 
@interface CloudDisk :NSObject

/// 云盘ID。
@property (strong,nonatomic,nonnull)  NSString*  volumeId;

/// 云盘快照ID。
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;

/// 云盘类型：hdd.std1,ssd.gp1,ssd.io1。
@property (strong,nonatomic,nonnull)  NSString*  diskType;

/// 云盘size,单位 GB。
@property (strong,nonatomic,nonnull)  NSNumber*  sizeGB;

/// 指定volume文件系统类型，目前支持[xfs, ext4]。
@property (strong,nonatomic,nonnull)  NSString*  fsType;

/// 云盘的 iops 值，目前只有 ssd.io1 类型有效。
@property (strong,nonatomic,nonnull)  NSNumber*  iops;

/// 是否随pod删除。
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;


-(id) initWithVolumeId:(NSString*) volumeId
    snapshotId:(NSString*)snapshotId
    diskType:(NSString*)diskType
    sizeGB:(NSNumber*)sizeGB
    fsType:(NSString*)fsType
    iops:(NSNumber*)iops
    autoDelete:(NSNumber*)autoDelete;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Env :NSObject

/// 环境变量名称（ASCII）。
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 环境变量取值。
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithName:(NSString*) name
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ExecSpec :NSObject

/// 执行的命令，总长度256个字符。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  command;


-(id) initWithCommand:(NSArray<NSString*>*) command;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface JDCloudVolumeSourceSpec :NSObject

/// 云盘id，使用已有云盘
@property (strong,nonatomic,nonnull)  NSString*  volumeId;

/// 云盘名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 云盘快照id，根据云盘快照创建云盘。
@property (strong,nonatomic,nonnull)  NSString*  snapshotId;

/// 云盘类型：hdd.std1,ssd.gp1,ssd.io1
@property (strong,nonatomic,nonnull)  NSString*  diskType;

/// 云盘size,单位 GB
@property (strong,nonatomic,nonnull)  NSNumber*  sizeGB;

/// 指定volume文件系统类型，目前支持[xfs, ext4]；如果新创建的盘，不指定文件系统类型默认格式化成xfs。
@property (strong,nonatomic,nonnull)  NSString*  fsType;

/// 随容器自动创建的新盘，会自动格式化成指定的文件系统类型；挂载已有的盘，默认不会格式化，只会按照指定的fsType去挂载；如果希望格式化，必须设置此字段为true。
@property (strong,nonatomic,nonnull)  NSNumber*  formatVolume;

/// 云盘的 iops 值，目前只有 ssd.io1 类型有效。
@property (strong,nonatomic,nonnull)  NSNumber*  iops;

/// 是否随pod删除。默认：true
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;


-(id) initWithVolumeId:(NSString*) volumeId
    name:(NSString*)name
    snapshotId:(NSString*)snapshotId
    diskType:(NSString*)diskType
    sizeGB:(NSNumber*)sizeGB
    fsType:(NSString*)fsType
    formatVolume:(NSNumber*)formatVolume
    iops:(NSNumber*)iops
    autoDelete:(NSNumber*)autoDelete;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface TcpSocketSpec :NSObject

/// 端口号，范围：[1-65535]
@property (strong,nonatomic,nonnull)  NSNumber*  port;


-(id) initWithPort:(NSNumber*) port;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface HostAliasSpec :NSObject

/// 域名列表。&lt;br&gt;
   /// eg  [&quot;foo.local&quot;, &quot;bar.local&quot;]。长度范围 1-10; 元素符合hostname命名规范。
   /// 
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  hostnames;

/// ipv4地址；eg &quot;127.0.0.1&quot;
@property (strong,nonatomic,nonnull)  NSString*  ip;


-(id) initWithHostnames:(NSArray<NSString*>*) hostnames
    ip:(NSString*)ip;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface EnvSpec :NSObject

/// 环境变量名称（ASCII）。范围：[1-64]。必须为字母、数字、下划线(_)，正则为&#x60;^[a-zA-Z0-9]*$&#x60;。
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 环境变量取值。范围：[0-1024]
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithName:(NSString*) name
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface VolumeMountSpec :NSObject

/// 要挂载的云盘，必须使用pod volumeSpec.name。
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 容器内挂载点，绝对路径，不得重复和嵌套挂载，不得挂载到根目录(&quot;/&quot;)。长度范围：[1-1024]
@property (strong,nonatomic,nonnull)  NSString*  mountPath;

/// 是否以只读方式挂载。默认 读写模式
@property (strong,nonatomic,nonnull)  NSNumber*  readOnly;


-(id) initWithName:(NSString*) name
    mountPath:(NSString*)mountPath
    readOnly:(NSNumber*)readOnly;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface HhSpec :NSObject

/// http header 键，需满足http的规则。长度范围:[1-64]
@property (strong,nonatomic,nonnull)  NSString*  name;

/// http header 值
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithName:(NSString*) name
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PodDnsConfigOption :NSObject

/// 长度范围：[1-63]，需满足linux resolver限制
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 长度范围：[0-100]，仅限timeout, attempts, ndots
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithName:(NSString*) name
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Hh :NSObject

/// http header 键
@property (strong,nonatomic,nonnull)  NSString*  name;

/// http header 值
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithName:(NSString*) name
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Tag :NSObject

/// Tag键
@property (strong,nonatomic,nonnull)  NSString*  key;

/// Tag值
@property (strong,nonatomic,nonnull)  NSString*  value;


-(id) initWithKey:(NSString*) key
    value:(NSString*)value;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DockerRegistryData :NSObject

/// registry服务器地址
@property (strong,nonatomic,nonnull)  NSString*  server;

/// 用户名
@property (strong,nonatomic,nonnull)  NSString*  username;

/// 密码
@property (strong,nonatomic,nonnull)  NSString*  password;

/// 邮件地址
@property (strong,nonatomic,nonnull)  NSString*  email;


-(id) initWithServer:(NSString*) server
    username:(NSString*)username
    password:(NSString*)password
    email:(NSString*)email;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ContainerStateRunning :NSObject

/// 容器最后一次重启或启动的时间。
@property (strong,nonatomic,nonnull)  NSString*  startedAt;


-(id) initWithStartedAt:(NSString*) startedAt;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface LogConfig :NSObject

/// 日志Driver名称。
@property (strong,nonatomic,nonnull)  NSString*  logDriver;


-(id) initWithLogDriver:(NSString*) logDriver;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceRequests :NSObject

/// 容器必需的计算资源
@property (strong,nonatomic,nonnull)  Request*  requests;

/// 容器使用计算资源上限
@property (strong,nonatomic,nonnull)  Request*  limits;


-(id) initWithRequests:(Request*) requests
    limits:(Request*)limits;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ResourceRequestsSpec :NSObject

/// 容器必需的计算资源
@property (strong,nonatomic,nonnull)  RequestSpec*  requests;

/// 容器使用计算资源上限
@property (strong,nonatomic,nonnull)  RequestSpec*  limits;


-(id) initWithRequests:(RequestSpec*) requests
    limits:(RequestSpec*)limits;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceNetworkInterface :NSObject

/// 弹性网卡ID
@property (strong,nonatomic,nonnull)  NSString*  networkInterfaceId;

/// 以太网地址
@property (strong,nonatomic,nonnull)  NSString*  macAddress;

/// 虚拟网络ID
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 子网ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 描述
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 安全组列表
@property (strong,nonatomic,nonnull)  NSArray<SecurityGroupSimple*>*  securityGroups;

/// 源和目标IP地址校验，取值为0或者1
@property (strong,nonatomic,nonnull)  NSNumber*  sanityCheck;

/// 网卡主IP
@property (strong,nonatomic,nonnull)  NetworkInterfacePrivateIp*  primaryIp;

/// SecondaryIps
@property (strong,nonatomic,nonnull)  NSArray<NetworkInterfacePrivateIp*>*  secondaryIps;


-(id) initWithNetworkInterfaceId:(NSString*) networkInterfaceId
    macAddress:(NSString*)macAddress
    vpcId:(NSString*)vpcId
    subnetId:(NSString*)subnetId
    descriptionValue:(NSString*)descriptionValue
    securityGroups:(NSArray<SecurityGroupSimple*>*)securityGroups
    sanityCheck:(NSNumber*)sanityCheck
    primaryIp:(NetworkInterfacePrivateIp*)primaryIp
    secondaryIps:(NSArray<NetworkInterfacePrivateIp*>*)secondaryIps;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceType :NSObject

/// 实例规格类型
@property (strong,nonatomic,nonnull)  NSString*  family;

/// 实例规格，比如g.b1.2xlarge
@property (strong,nonatomic,nonnull)  NSString*  instanceTypeValue;

/// cpu个数
@property (strong,nonatomic,nonnull)  NSNumber*  cpu;

/// 内存大小
@property (strong,nonatomic,nonnull)  NSNumber*  memoryMB;

/// 支持弹性网卡的数量
@property (strong,nonatomic,nonnull)  NSNumber*  nicLimit;

/// 描述
@property (strong,nonatomic,nonnull)  NSString*  desc;

/// 规格状态
@property (strong,nonatomic,nonnull)  NSArray<InstanceTypeState*>*  state;


-(id) initWithFamily:(NSString*) family
    instanceTypeValue:(NSString*)instanceTypeValue
    cpu:(NSNumber*)cpu
    memoryMB:(NSNumber*)memoryMB
    nicLimit:(NSNumber*)nicLimit
    desc:(NSString*)desc
    state:(NSArray<InstanceTypeState*>*)state;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Volume :NSObject

/// volume名字，在一个Pod唯一。
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 提供给Pod的cloud disk.
@property (strong,nonatomic,nonnull)  JDCloudVolumeSource*  jdcloudDisk;


-(id) initWithName:(NSString*) name
    jdcloudDisk:(JDCloudVolumeSource*)jdcloudDisk;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface InstanceInfo :NSObject

/// pod ID
@property (strong,nonatomic,nonnull)  NSString*  resourceId;

/// pod 名称
@property (strong,nonatomic,nonnull)  NSString*  resourceName;

/// 备注信息
@property (strong,nonatomic,nonnull)  NSString*  remark;

/// 绑定资源
@property (strong,nonatomic,nonnull)  NSArray<BindInfo*>*  bind;


-(id) initWithResourceId:(NSString*) resourceId
    resourceName:(NSString*)resourceName
    remark:(NSString*)remark
    bind:(NSArray<BindInfo*>*)bind;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DnsConfigSpec :NSObject

/// DNS服务器IP地址列表，重复的将会被移除。&lt;br&gt;
   /// eg [&quot;8.8.8.8&quot;, &quot;4.2.2.2&quot;]。列表长度：[0-20]，列表中元素符合IPv4格式。
   /// 
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  nameservers;

/// DNS搜索域列表，用于主机名查找。&lt;br&gt;
   /// eg [&quot;ns1.svc.cluster.local&quot;, &quot;my.dns.search.suffix&quot;]。列表长度：[0-6]，列表中所有字符总长度不超过256个。
   /// 
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  searches;

/// DNS解析器选项列表。&lt;br&gt;
   /// eg [&quot;ndots&quot;:&quot;2&quot;, &quot;edns0&quot;:&quot;&quot;]。列表长度：[0-10]
@property (strong,nonatomic,nonnull)  NSArray<PodDnsConfigOptionSpec*>*  options;


-(id) initWithNameservers:(NSArray<NSString*>*) nameservers
    searches:(NSArray<NSString*>*)searches
    options:(NSArray<PodDnsConfigOptionSpec*>*)options;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkInterfaceAttachmentSpec :NSObject

/// 指明删除pod时是否删除网卡，默认True；当前只能是True
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;

/// 设备Index，目前pod只支持一个网卡，所以只能设置为1
@property (strong,nonatomic,nonnull)  NSNumber*  deviceIndex;

/// 网卡接口规范
@property (strong,nonatomic,nonnull)  NetworkInterfaceSpec*  networkInterface;


-(id) initWithAutoDelete:(NSNumber*) autoDelete
    deviceIndex:(NSNumber*)deviceIndex
    networkInterface:(NetworkInterfaceSpec*)networkInterface;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface HgSpec :NSObject

/// 默认值：http；可选值 http, https, HTTP, HTTPS。
@property (strong,nonatomic,nonnull)  NSString*  scheme;

/// 连接到pod的host信息，默认使用pod_ip，满足hostname或者ipv4格式. 长度范围:[0-253]
@property (strong,nonatomic,nonnull)  NSString*  host;

/// 端口号。范围：[1-65535]
@property (strong,nonatomic,nonnull)  NSNumber*  port;

/// HTTP的路径。范围：[1-256]
@property (strong,nonatomic,nonnull)  NSString*  path;

/// 自定义Http headers
@property (strong,nonatomic,nonnull)  NSArray<HhSpec*>*  httpHeader;


-(id) initWithScheme:(NSString*) scheme
    host:(NSString*)host
    port:(NSNumber*)port
    path:(NSString*)path
    httpHeader:(NSArray<HhSpec*>*)httpHeader;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface VolumeSpec :NSObject

/// volume名字，符合DNS-1123 label规范，在一个Pod内唯一。
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 提供给Pod的cloud disk.
@property (strong,nonatomic,nonnull)  JDCloudVolumeSourceSpec*  jdcloudDisk;


-(id) initWithName:(NSString*) name
    jdcloudDisk:(JDCloudVolumeSourceSpec*)jdcloudDisk;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
 
@interface ProbeSpec :NSObject

/// 容器启动多长时间后，触发探针。默认值：10秒；范围:[0-300]
@property (strong,nonatomic,nonnull)  NSNumber*  initialDelaySeconds;

/// 探测的时间间隔。默认值 10秒，范围:[1-300]
@property (strong,nonatomic,nonnull)  NSNumber*  periodSeconds;

/// 探测的超时时间。默认值 1秒；范围:[1-300]
@property (strong,nonatomic,nonnull)  NSNumber*  timeoutSeconds;

/// 在成功状态后，连续探活失败的次数，认为探活失败。默认值 3次；范围:[1-10]
@property (strong,nonatomic,nonnull)  NSNumber*  failureThreshold;

/// 在失败状态后，连续探活成功的次数，认为探活成功。默认值 1次；范围:[1-10]
@property (strong,nonatomic,nonnull)  NSNumber*  successThreshold;

/// 在容器内执行指定命令；如果命令退出时返回码为 0 则认为诊断成功。
@property (strong,nonatomic,nonnull)  ExecSpec*  exec;

/// 对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。&lt;br&gt;
   /// 如果响应的状态码大于等于200 且小于 400，则诊断被认为是成功的。 
   /// 
@property (strong,nonatomic,nonnull)  HgSpec*  httpGet;

/// 对指定端口上的容器的 IP 地址进行 TCP 检查；如果端口打开，则诊断被认为是成功的。
@property (strong,nonatomic,nonnull)  TcpSocketSpec*  tcpSocket;


-(id) initWithInitialDelaySeconds:(NSNumber*) initialDelaySeconds
    periodSeconds:(NSNumber*)periodSeconds
    timeoutSeconds:(NSNumber*)timeoutSeconds
    failureThreshold:(NSNumber*)failureThreshold
    successThreshold:(NSNumber*)successThreshold
    exec:(ExecSpec*)exec
    httpGet:(HgSpec*)httpGet
    tcpSocket:(TcpSocketSpec*)tcpSocket;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface NetworkInterfaceAttachment :NSObject

/// 指明删除pod时是否删除网卡。
@property (strong,nonatomic,nonnull)  NSNumber*  autoDelete;

/// 设备Index，目前pod只支持一个网卡，所以只能设置为1
@property (strong,nonatomic,nonnull)  NSNumber*  deviceIndex;

/// 绑定状态
@property (strong,nonatomic,nonnull)  NSString*  attachStatus;

/// 绑定时间
@property (strong,nonatomic,nonnull)  NSString*  attachTime;

/// 网卡接口规范
@property (strong,nonatomic,nonnull)  InstanceNetworkInterface*  networkInterface;


-(id) initWithAutoDelete:(NSNumber*) autoDelete
    deviceIndex:(NSNumber*)deviceIndex
    attachStatus:(NSString*)attachStatus
    attachTime:(NSString*)attachTime
    networkInterface:(InstanceNetworkInterface*)networkInterface;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PodStatus :NSObject

/// pod当前状态
@property (strong,nonatomic,nonnull)  NSString*  phase;

/// （简要）pod处于当前状态的原因
@property (strong,nonatomic,nonnull)  NSString*  reason;

/// pod处于当前状态原因的详细信息
@property (strong,nonatomic,nonnull)  NSString*  message;

/// 分配给pod的IP地址。至少在集群内是可路由的。未分配则为空。
@property (strong,nonatomic,nonnull)  NSString*  podIP;

/// 目前pod的状态。
@property (strong,nonatomic,nonnull)  NSArray<PodCondition*>*  conditions;

/// Pod生命周期开始的时间。
@property (strong,nonatomic,nonnull)  NSString*  startTime;


-(id) initWithPhase:(NSString*) phase
    reason:(NSString*)reason
    message:(NSString*)message
    podIP:(NSString*)podIP
    conditions:(NSArray<PodCondition*>*)conditions
    startTime:(NSString*)startTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ContainerResourceSpec :NSObject

/// 容器名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 容器计算资源配置
@property (strong,nonatomic,nonnull)  ResourceRequestsSpec*  resources;


-(id) initWithName:(NSString*) name
    resources:(ResourceRequestsSpec*)resources;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Hg :NSObject

/// 默认值：http。
@property (strong,nonatomic,nonnull)  NSString*  scheme;

/// 连接到pod的host信息。
@property (strong,nonatomic,nonnull)  NSString*  host;

/// 端口号。
@property (strong,nonatomic,nonnull)  NSNumber*  port;

/// HTTP的路径。
@property (strong,nonatomic,nonnull)  NSString*  path;

/// 自定义Http headers
@property (strong,nonatomic,nonnull)  NSArray<Hh*>*  httpHeader;


-(id) initWithScheme:(NSString*) scheme
    host:(NSString*)host
    port:(NSNumber*)port
    path:(NSString*)path
    httpHeader:(NSArray<Hh*>*)httpHeader;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Probe :NSObject

/// 容器启动多久后触发探针。
@property (strong,nonatomic,nonnull)  NSNumber*  initialDelaySeconds;

/// 探测的时间间隔。
@property (strong,nonatomic,nonnull)  NSNumber*  periodSeconds;

/// 探测的超时时间。
@property (strong,nonatomic,nonnull)  NSNumber*  timeoutSeconds;

/// 在成功状态后，连续探活失败的次数，认为探活失败。
@property (strong,nonatomic,nonnull)  NSNumber*  failureThreshold;

/// 在失败状态后，连续探活成功的次数，认为探活成功。
@property (strong,nonatomic,nonnull)  NSNumber*  successThreshold;

/// 在容器内执行指定命令；如果命令退出时返回码为 0 则认为诊断成功。
@property (strong,nonatomic,nonnull)  Exec*  exec;

/// 对指定的端口和路径上的容器的 IP 地址执行 HTTP Get 请求。如果响应的状态码大于等于 200 且小于 400，则认为诊断成功。
@property (strong,nonatomic,nonnull)  Hg*  httpGet;

/// 对指定端口上的容器的 IP 地址进行 TCP 检查；如果端口打开，则认为诊断成功。
@property (strong,nonatomic,nonnull)  TcpSocket*  tcpSocket;


-(id) initWithInitialDelaySeconds:(NSNumber*) initialDelaySeconds
    periodSeconds:(NSNumber*)periodSeconds
    timeoutSeconds:(NSNumber*)timeoutSeconds
    failureThreshold:(NSNumber*)failureThreshold
    successThreshold:(NSNumber*)successThreshold
    exec:(Exec*)exec
    httpGet:(Hg*)httpGet
    tcpSocket:(TcpSocket*)tcpSocket;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ContainerState :NSObject

/// 容器运行的详细信息
@property (strong,nonatomic,nonnull)  ContainerStateRunning*  running;

/// 容器终止的详细信息
@property (strong,nonatomic,nonnull)  ContainerStateTerminated*  terminated;

/// 容器等待的详细信息
@property (strong,nonatomic,nonnull)  ContainerStateWaiting*  waiting;


-(id) initWithRunning:(ContainerStateRunning*) running
    terminated:(ContainerStateTerminated*)terminated
    waiting:(ContainerStateWaiting*)waiting;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ContainerStatus :NSObject

/// 容器名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 容器被重新启动的次数
@property (strong,nonatomic,nonnull)  NSNumber*  restartCount;

/// 容器是否通过了就绪探针探测
@property (strong,nonatomic,nonnull)  NSNumber*  ready;

/// 关于容器当前状态详细信息
@property (strong,nonatomic,nonnull)  ContainerState*  state;

/// 关于容器最后一次termination详细信息
@property (strong,nonatomic,nonnull)  ContainerState*  lastState;


-(id) initWithName:(NSString*) name
    restartCount:(NSNumber*)restartCount
    ready:(NSNumber*)ready
    state:(ContainerState*)state
    lastState:(ContainerState*)lastState;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Container :NSObject

/// 容器名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 容器执行的命令。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  command;

/// 容器执行命令的参数。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  args;

/// 容器执行的环境变量。
@property (strong,nonatomic,nonnull)  NSArray<Env*>*  env;

/// 容器镜像名称。
@property (strong,nonatomic,nonnull)  NSString*  image;

/// 容器镜像仓库认证信息。
@property (strong,nonatomic,nonnull)  NSString*  secret;

/// 容器是否分配tty。
@property (strong,nonatomic,nonnull)  NSNumber*  tty;

/// 容器的工作目录。
@property (strong,nonatomic,nonnull)  NSString*  workingDir;

/// 容器存活探针配置
@property (strong,nonatomic,nonnull)  Probe*  livenessProbe;

/// 容器服务就绪探针配置
@property (strong,nonatomic,nonnull)  Probe*  readinessProbe;

/// 容器计算资源配置
@property (strong,nonatomic,nonnull)  ResourceRequests*  resources;

/// 容器计算资源配置
@property (strong,nonatomic,nonnull)  CloudDisk*  systemDisk;

/// 容器计算资源配置
@property (strong,nonatomic,nonnull)  NSArray<VolumeMount*>*  volumeMounts;

/// 容器状态信息
@property (strong,nonatomic,nonnull)  ContainerStatus*  containerStatus;


-(id) initWithName:(NSString*) name
    command:(NSArray<NSString*>*)command
    args:(NSArray<NSString*>*)args
    env:(NSArray<Env*>*)env
    image:(NSString*)image
    secret:(NSString*)secret
    tty:(NSNumber*)tty
    workingDir:(NSString*)workingDir
    livenessProbe:(Probe*)livenessProbe
    readinessProbe:(Probe*)readinessProbe
    resources:(ResourceRequests*)resources
    systemDisk:(CloudDisk*)systemDisk
    volumeMounts:(NSArray<VolumeMount*>*)volumeMounts
    containerStatus:(ContainerStatus*)containerStatus;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface DnsConfig :NSObject

/// DNS服务器IP地址列表。
   /// 
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  nameservers;

/// DNS搜索域列表，用于主机名查找。
   /// 
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  searches;

/// DNS解析器选项列表。
@property (strong,nonatomic,nonnull)  NSArray<PodDnsConfigOption*>*  options;


-(id) initWithNameservers:(NSArray<NSString*>*) nameservers
    searches:(NSArray<NSString*>*)searches
    options:(NSArray<PodDnsConfigOption*>*)options;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Secret :NSObject

/// 镜像仓库认证信息名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 镜像仓库认证信息类型
@property (strong,nonatomic,nonnull)  NSString*  type;

/// 镜像仓库认证信息创建时间
@property (strong,nonatomic,nonnull)  NSString*  createdAt;

/// 镜像仓库认证信息数据
@property (strong,nonatomic,nonnull)  DockerRegistryData*  data;


-(id) initWithName:(NSString*) name
    type:(NSString*)type
    createdAt:(NSString*)createdAt
    data:(DockerRegistryData*)data;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface Pod :NSObject

/// pod ID
@property (strong,nonatomic,nonnull)  NSString*  podId;

/// pod 名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 描述信息，默认为空。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 可用区
@property (strong,nonatomic,nonnull)  NSString*  az;

/// 主机名
@property (strong,nonatomic,nonnull)  NSString*  hostname;

/// pod 所需的计算资源规格
@property (strong,nonatomic,nonnull)  NSString*  instanceType;

/// pod重启策略
@property (strong,nonatomic,nonnull)  NSString*  restartPolicy;

/// 优雅关闭的时间
@property (strong,nonatomic,nonnull)  NSNumber*  terminationGracePeriodSeconds;

/// 主网卡所属vpcId
@property (strong,nonatomic,nonnull)  NSString*  vpcId;

/// 主网卡所属子网的ID
@property (strong,nonatomic,nonnull)  NSString*  subnetId;

/// 主网卡主IP地址
@property (strong,nonatomic,nonnull)  NSString*  privateIpAddress;

/// pod内容器的/etc/resolv.conf配置
@property (strong,nonatomic,nonnull)  DnsConfig*  dnsConfig;

/// 容器日志配置信息；默认会在本地分配10MB的存储空间
@property (strong,nonatomic,nonnull)  LogConfig*  logConfig;

/// pod内容器的/etc/hosts配置
@property (strong,nonatomic,nonnull)  NSArray<HostAlias*>*  hostAliases;

/// 属于Pod的volume列表，提供挂载到containers上。
@property (strong,nonatomic,nonnull)  NSArray<Volume*>*  volumes;

/// pod内的容器信息
@property (strong,nonatomic,nonnull)  NSArray<Container*>*  containers;

/// pod状态信息
@property (strong,nonatomic,nonnull)  PodStatus*  podStatus;

/// 主网卡主IP关联的弹性IP规格
@property (strong,nonatomic,nonnull)  ElasticIp*  elasticIp;

/// 主网卡配置信息
@property (strong,nonatomic,nonnull)  NetworkInterfaceAttachment*  primaryNetworkInterface;

/// Tags
@property (strong,nonatomic,nonnull)  NSArray<Tag*>*  tags;

/// 计费配置；如不指定，默认计费类型是后付费-按使用时常付费
@property (strong,nonatomic,nonnull)  Charge*  charge;

/// Pod创建时间
@property (strong,nonatomic,nonnull)  NSString*  createTime;


-(id) initWithPodId:(NSString*) podId
    name:(NSString*)name
    descriptionValue:(NSString*)descriptionValue
    az:(NSString*)az
    hostname:(NSString*)hostname
    instanceType:(NSString*)instanceType
    restartPolicy:(NSString*)restartPolicy
    terminationGracePeriodSeconds:(NSNumber*)terminationGracePeriodSeconds
    vpcId:(NSString*)vpcId
    subnetId:(NSString*)subnetId
    privateIpAddress:(NSString*)privateIpAddress
    dnsConfig:(DnsConfig*)dnsConfig
    logConfig:(LogConfig*)logConfig
    hostAliases:(NSArray<HostAlias*>*)hostAliases
    volumes:(NSArray<Volume*>*)volumes
    containers:(NSArray<Container*>*)containers
    podStatus:(PodStatus*)podStatus
    elasticIp:(ElasticIp*)elasticIp
    primaryNetworkInterface:(NetworkInterfaceAttachment*)primaryNetworkInterface
    tags:(NSArray<Tag*>*)tags
    charge:(Charge*)charge
    createTime:(NSString*)createTime;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface RebuildContainerSpec :NSObject

/// 容器名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 容器执行命令，如果不指定默认是docker镜像的ENTRYPOINT。总长度256个字符。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  command;

/// 容器执行命令的参数，如果不指定默认是docker镜像的CMD。总长度2048个字符。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  args;

/// 容器执行的环境变量；如果和镜像中的环境变量Key相同，会覆盖镜像中的值。长度范围：[0-100]
@property (strong,nonatomic,nonnull)  NSArray<EnvSpec*>*  env;

/// 镜像名称 &lt;/br&gt;
   /// 容器镜像名字。 nginx:latest。长度范围：[1-639]
   /// 1. Docker Hub官方镜像通过类似nginx, mysql/mysql-server的名字指定 &lt;/br&gt; 
   /// 2. repository长度最大256个字符，tag最大128个字符，registry最大255个字符 &lt;/br&gt; 
   /// 
@property (strong,nonatomic,nonnull)  NSString*  image;

/// 镜像仓库认证信息。如果目前不传，默认选择dockerHub镜像
@property (strong,nonatomic,nonnull)  NSString*  secret;

/// 容器是否分配tty。默认不分配
@property (strong,nonatomic,nonnull)  NSNumber*  tty;

/// 容器的工作目录。如果不指定，默认是根目录（/）；必须是绝对路径；长度范围：[0-1024]
@property (strong,nonatomic,nonnull)  NSString*  workingDir;

/// 容器存活探针配置
@property (strong,nonatomic,nonnull)  ProbeSpec*  livenessProbe;

/// 容器服务就绪探针配置
@property (strong,nonatomic,nonnull)  ProbeSpec*  readinessProbe;

/// 云盘挂载信息
@property (strong,nonatomic,nonnull)  NSArray<VolumeMountSpec*>*  volumeMounts;


-(id) initWithName:(NSString*) name
    command:(NSArray<NSString*>*)command
    args:(NSArray<NSString*>*)args
    env:(NSArray<EnvSpec*>*)env
    image:(NSString*)image
    secret:(NSString*)secret
    tty:(NSNumber*)tty
    workingDir:(NSString*)workingDir
    livenessProbe:(ProbeSpec*)livenessProbe
    readinessProbe:(ProbeSpec*)readinessProbe
    volumeMounts:(NSArray<VolumeMountSpec*>*)volumeMounts;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface ContainerSpec :NSObject

/// 容器名称，符合DNS-1123 label规范，在一个Pod内不能重复。
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 容器执行命令，如果不指定默认是docker镜像的ENTRYPOINT。总长度256个字符。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  command;

/// 容器执行命令的参数，如果不指定默认是docker镜像的CMD。总长度2048个字符。
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  args;

/// 容器执行的环境变量；如果和镜像中的环境变量Key相同，会覆盖镜像中的值。数组范围：[0-100]
@property (strong,nonatomic,nonnull)  NSArray<EnvSpec*>*  env;

/// 镜像名称 &lt;/br&gt;
   /// 容器镜像名字。 nginx:latest。长度范围：[1-639]
   /// 1. Docker Hub官方镜像通过类似nginx, mysql/mysql-server的名字指定 &lt;/br&gt; 
   /// 2. repository长度最大256个字符，tag最大128个字符，registry最大255个字符 &lt;/br&gt; 
   /// 
@property (strong,nonatomic,nonnull)  NSString*  image;

/// 镜像仓库认证信息。如果目前不传，默认选择dockerHub镜像
@property (strong,nonatomic,nonnull)  NSString*  secret;

/// 容器是否分配tty。默认不分配
@property (strong,nonatomic,nonnull)  NSNumber*  tty;

/// 容器的工作目录。如果不指定，默认是根目录（/）；必须是绝对路径；长度范围：[0-1024]
@property (strong,nonatomic,nonnull)  NSString*  workingDir;

/// 容器存活探针配置
@property (strong,nonatomic,nonnull)  ProbeSpec*  livenessProbe;

/// 容器服务就绪探针配置
@property (strong,nonatomic,nonnull)  ProbeSpec*  readinessProbe;

/// 容器计算资源配置
@property (strong,nonatomic,nonnull)  ResourceRequestsSpec*  resources;

/// 容器计算资源配置
@property (strong,nonatomic,nonnull)  CloudDiskSpec*  systemDisk;

/// 云盘挂载信息
@property (strong,nonatomic,nonnull)  NSArray<VolumeMountSpec*>*  volumeMounts;


-(id) initWithName:(NSString*) name
    command:(NSArray<NSString*>*)command
    args:(NSArray<NSString*>*)args
    env:(NSArray<EnvSpec*>*)env
    image:(NSString*)image
    secret:(NSString*)secret
    tty:(NSNumber*)tty
    workingDir:(NSString*)workingDir
    livenessProbe:(ProbeSpec*)livenessProbe
    readinessProbe:(ProbeSpec*)readinessProbe
    resources:(ResourceRequestsSpec*)resources
    systemDisk:(CloudDiskSpec*)systemDisk
    volumeMounts:(NSArray<VolumeMountSpec*>*)volumeMounts;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end
@interface PodSpec :NSObject

/// Pod名称
@property (strong,nonatomic,nonnull)  NSString*  name;

/// 描述信息，默认为空；允许输入UTF-8编码下的全部字符，不超过256字符。
@property (strong,nonatomic,nonnull)  NSString*  descriptionValue;

/// 主机名；范围：[1-63]个ASCII字符，默认值为 podId
@property (strong,nonatomic,nonnull)  NSString*  hostname;

/// pod中容器重启策略；Always, OnFailure, Never；默认：Always
@property (strong,nonatomic,nonnull)  NSString*  restartPolicy;

/// 优雅关机宽限时长，如果超时，则触发强制关机。默认：30s，值不能是负数，范围：[0-300]
@property (strong,nonatomic,nonnull)  NSNumber*  terminationGracePeriodSeconds;

/// 实例类型；参考[文档](https://www.jdcloud.com/help/detail/1992/isCatalog/1)
@property (strong,nonatomic,nonnull)  NSString*  instanceType;

/// 容器所属可用区
@property (strong,nonatomic,nonnull)  NSString*  az;

/// pod内容器的/etc/resolv.conf配置
@property (strong,nonatomic,nonnull)  DnsConfigSpec*  dnsConfig;

/// 容器日志配置信息；默认会在本地分配10MB的存储空间
@property (strong,nonatomic,nonnull)  LogConfigSpec*  logConfig;

/// 域名和IP映射的信息；&lt;/br&gt; 最大10个alias
@property (strong,nonatomic,nonnull)  NSArray<HostAliasSpec*>*  hostAliases;

/// Pod的volume列表，可以挂载到container上。长度范围：[0,7]
@property (strong,nonatomic,nonnull)  NSArray<VolumeSpec*>*  volumes;

/// Pod的容器列表，至少一个容器。长度范围[1,8]
@property (strong,nonatomic,nonnull)  NSArray<ContainerSpec*>*  containers;

/// 计费模式：包年包月预付费（prepaid_by_duration）, 按配置后付费（postpaid_by_duration）。默认：按配置后付费
@property (strong,nonatomic,nonnull)  ChargeSpec*  charge;

/// 主网卡主IP关联的弹性IP规格
@property (strong,nonatomic,nonnull)  ElasticIpSpec*  elasticIp;

/// 主网卡配置信息
@property (strong,nonatomic,nonnull)  NetworkInterfaceAttachmentSpec*  primaryNetworkInterface;


-(id) initWithName:(NSString*) name
    descriptionValue:(NSString*)descriptionValue
    hostname:(NSString*)hostname
    restartPolicy:(NSString*)restartPolicy
    terminationGracePeriodSeconds:(NSNumber*)terminationGracePeriodSeconds
    instanceType:(NSString*)instanceType
    az:(NSString*)az
    dnsConfig:(DnsConfigSpec*)dnsConfig
    logConfig:(LogConfigSpec*)logConfig
    hostAliases:(NSArray<HostAliasSpec*>*)hostAliases
    volumes:(NSArray<VolumeSpec*>*)volumes
    containers:(NSArray<ContainerSpec*>*)containers
    charge:(ChargeSpec*)charge
    elasticIp:(ElasticIpSpec*)elasticIp
    primaryNetworkInterface:(NetworkInterfaceAttachmentSpec*)primaryNetworkInterface;
-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;                    
@end

#endif /* PodModel_h */
